﻿#include "widget.h"
#include "ui_widget.h"
#include<QTimer>
#include<QDebug>
#include<QMouseEvent>
Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    //启动定时器
    id1 = startTimer(1000);//参数1 间隔毫秒
    id2 = startTimer(2000);

    //第二种定时器
    QTimer *t = new QTimer(this);
    //启动定时器
    t->start(500);
    connect(t,&QTimer::timeout,[=](){
       static  int num = 1;
       ui->label_4->setText(QString::number(num++));
    });

    connect(ui->btn,&QPushButton::clicked,[=](){
           t->stop();
    });
    connect(ui->btn2,&QPushButton::clicked,[=](){
            t->start();
    });

    //给label安装事件过滤器
    //步骤1 安装事件过滤器
    ui->label->installEventFilter(this);

}
//步骤二 重写eventfilter事件
 bool Widget::eventFilter(QObject *obj, QEvent *e)
 {
     if(obj==ui->label)
     {
         if(e->type() == QEvent::MouseButtonPress)
         {
             QMouseEvent *ev = static_cast<QMouseEvent*>(e);
             QString str = QString( "EventFilter :: 鼠标按下了  x=%1    y=%2    GloabX=%3    GloabY=%4"  ).arg(ev->x()).arg(ev->y()).arg(ev->globalX()).arg(ev->globalY());
             qDebug()<<str;

             return true;//true代表用户自己处理这个事件，不向下分发

         }
     }
     return QWidget::eventFilter(obj,e);//其它事件交给父类处理 默认处理

 }
void Widget::timerEvent(QTimerEvent *ev)
{
    if(ev->timerId()==id1)
    {
        static int num = 1;
        //每隔一秒加一
        ui->label_2->setText(QString::number(num++));
    }
    if(ev->timerId()==id2)
    {
        static int num2 = 1;
        //每隔两秒加一
        ui->label_3->setText(QString::number(num2++));
    }
}

Widget::~Widget()
{
    delete ui;
}

